﻿using System;
using System.Text;

namespace Sencha.Serialization
{
	using Serializers;
	using Contracts;
	
	public interface ISerializationContext
	{
		/// <summary>
		/// Get data contract for this serializer
		/// </summary>
		DataContract DataContract { get; }
		/// <summary>
		/// List of available features
		/// </summary>
		Features Features { get; set; }
		/// <summary>
		/// Format for serialization/deserialization of primitive values. Default to System.Globalization.CultureInfo.InvariantCulture
		/// </summary>
		IFormatProvider Format { get; }
		/// <summary>
		/// Date and time formats for serialization/deserialization of DateTime values Default to Sencha.Serialization.Json.DateTimeFormat
		/// </summary>
		/// <see cref="Sencha.Serialization.Json.DateTimeFormat"/>
		string[] DateTimeFormats { get; }
		/// <summary>
		/// Encdoing used for binary/text convetion. Default is UTF-8
		/// </summary>
		Encoding Encoding { get; }

		/// <summary>
		/// Get objects hierarchy during serialization process.
		/// </summary>
		System.Collections.Stack Hierarchy { get; }
	}
}
